Satellite Scheduling System

ABSTRACT

Systems and methods are provided for scheduling objects having pair-wise and cumulative constraints. The systems and methods presented can utilize a directed acyclic graph to increase or maximize a utilization function. The objects can comprise satellites in a constellation of satellites. In some implementations, the satellites are imaging satellites, and the systems and methods for scheduling can use human collaboration to determine events of interest for acquisition of images. In some implementations, dominant edges are removed from the directed acyclic graph. In some implementations, dynamic weights are assigned to nodes associated with downlink events in the directed acyclic graph.

PRIORITY CLAIM

This application claims the benefit of priority of U.S. patentapplication Ser. No. 14/522,701, filed Oct. 24, 2014, U.S. ProvisionalPatent Application Ser. No. 61/895,310, filed Oct. 24, 2013, and U.S.Provisional Patent Application Ser. No. 61/900,276, filed Nov. 5, 2013,each of which are incorporated herein by reference.

BACKGROUND

Scheduling problems appear in many applications such as satellitescheduling, airline crew scheduling, vehicle routing, traveling salesmenproblems, and the like. Applications such as these involve allocatingresources to activities over time. Typically, resources are scarce andconstrained in various ways, e.g., in the capacity of resources and/orthe order of activities. Solving a typical scheduling problem caninvolve creating a schedule of activities that satisfies the constraintsand is optimal according to some criterion. Implementing a schedule caninclude finding a desirable solution to a scheduling problem accountingfor various constraints, communicating the desirable solution to theappropriate people or systems, and executing the schedule ascommunicated.

SUMMARY

Aspects and advantages of embodiments of the present disclosure will beset forth in part in the following description, or may be learned fromthe description, or may be learned through practice of the embodiments.

One example aspect of the present disclosure is directed to a system forscheduling events for a constellation of imaging satellites. The systemincludes non-transitory data storage configured to store satelliteproperties information corresponding to characteristics of one or moreimaging satellites in the constellation of imaging satellites. Thesystem includes one or more computing devices in communication with thedata storage. The one or more computing devices are configured toexecute an order management system configured to produce or receiverequests for an image collection event and an orbit analysis systemconfigured to identify one or more imaging satellites in theconstellation of imaging satellites which will be positioned over aregion suitable to perform a requested image collection event. The oneor more computing devices a further configured to execute a maintenancesystem configured to produce requests for onboard maintenance forimaging satellites in the constellation of imaging satellites and asatellite scheduling system configured to receive event requests andsatellite properties and user input relating to changes to one or moreof the event requests and to produce a near-optimal schedule of eventsthat does not violate constraints of the constellation of imagingsatellites. The near-optimal schedule can take into account at least inpart the received user input. The system can further include a satellitecontrol system configured to receive the near-optimal schedule of eventsand convert the near-optimal schedule of events to control instructionsfor transmission to the one or more imaging satellites in theconstellation of imaging satellites.

Another example aspect of the present disclosure is directed to a methodof scheduling events for a constellation of imaging satellites. Themethod includes receiving, by one or more computing devices, a requestfor an image collection event and identifying, by the one or morecomputing devices, one or more imaging satellites in the constellationof imaging satellites which will be positioned over a region suitable toperform a requested image collection event. The method can furtherinclude receiving, by the one or more computing devices, data indicativeof a plurality of event requests and data indicative of satelliteproperties. The method can further include receiving, by the one or morecomputing devices, data indicative of user input relating to changes toone or more of the event requests and producing, by the one or morecomputing devices, a near-optimal schedule of events that does notviolate constraints of the constellation of imaging satellites. Thenear-optimal schedule of events can take into account at least in partthe user input relating to changes to one or more of the event requests.The method can further include converting, by the one or more computingdevices, the near optimal schedule of events to control instructions fortransmission to one or more imaging satellites in the constellation ofimaging satellites.

Other aspects of the present disclosure are directed to systems,apparatus, tangible non-transitory computer-readable media, userinterfaces and devices for scheduling events for objects, such asimaging satellites.

These and other features, aspects and advantages of various embodimentswill become better understood with reference to the followingdescription and appended claims. The accompanying drawings, which areincorporated in and constitute a part of this specification, illustrateembodiments of the present disclosure and, together with thedescription, serve to explain the related principles.

BRIEF DESCRIPTION OF THE DRAWINGS

Detailed discussion of embodiments directed to one of ordinary skill inthe art are set forth in the specification, which makes reference to theappended figures.

FIG. 1 illustrates a representation of an example constellation ofimaging micro-satellites in a low-earth orbit, a control system, aground communication system, and a target area.

FIG. 2 illustrates a block diagram of an example embodiment of a controlsystem configured to control one or more objects.

FIG. 3 illustrates a block diagram of an example embodiment of a controlsystem incorporating a user interface.

FIG. 4 illustrates a block diagram of an example embodiment of ascheduling module.

FIG. 5 illustrates a flow chart of an embodiment of a method for findinga near-optimal schedule using a graph.

FIG. 6 illustrates an example graph showing possible paths through thegraph and an example of a near-optimal path.

FIG. 7 illustrates a flow chart of an embodiment of a method for findingnear-optimal schedules of events for a constellation of satellitessubject to duplication constraints.

FIG. 8 illustrates an example graph of graphs showing a path through thegraphs which increases utilization while avoiding undesirableduplication of events.

FIG. 9 illustrates a block diagram of an example system for scheduling aconstellation of imaging satellites.

FIG. 10 depicts an example directed acyclic graph (DAG).

FIG. 11 depicts an example DAG after a node has been forced out.

FIG. 12 depicts an example DAG after a node has been forced in.

DETAILED DESCRIPTION

Reference now will be made in detail to embodiments, one or moreexamples of which are illustrated in the drawings. Each example isprovided by way of explanation of the embodiments, not limitation of theinvention. In fact, it will be apparent to those skilled in the art thatvarious modifications and variations can be made to the embodimentswithout departing from the scope or spirit of the present disclosure.For instance, features illustrated or described as part of oneembodiment can be used with another embodiment to yield a still furtherembodiment. Thus, it is intended that aspects of the present disclosurecover such modifications and variations.

Overview

Example aspects of the present disclosure relate to systems and methodsfor scheduling satellites, for example a constellation of imagingsatellites. Embodiments of the systems and methods can be used forscheduling multiple events with interdependent constraints, and moreparticularly for producing schedules in a relatively fast and efficientmanner. In some implementations, the disclosed systems and methods canbe used to produce schedules of events for a constellation ofsatellites.

For a constellation of imaging satellites, events which can be scheduledinclude image acquisition tasks, maintenance tasks, communication tasks,and the like. A scheduling system can generate a schedule of events byincorporating and analyzing a number of inputs, parameters, andvariables to produce timely, efficient, and valuable use of thesatellites in the constellation.

In some implementations, systems and methods are provided for quicklyscheduling one or more satellites having pair-wise and cumulativeconstraints. The systems and methods presented can utilize directedacyclic graphs (DAGs) to increase or maximize a utilization function.The directed acyclic graphs can include edges encoding constraintsassociated with the satellites. A schedule of events can be determinedby identifying a path through the DAG, such as a highest weighted ormaximum cost path through the DAG.

In some embodiments, a computerized scheduling engine can be used toschedule a constellation of satellites for increased or optimumperformance and also (optionally) use human input, which can providelate-breaking changes affecting the schedule (e.g., imagining targetdesirability). The scheduling engine can incorporate human actions intoits decision-making protocol, for example, by incorporating the humanactions into a DAG used for scheduling optimization.

In some implementations, edges of the DAG that may be determined to benot part of the longest path through the DAG are not traversed (and/ornot included in the DAG), which may advantageously save memory (storagespace) and/or computing time. In some implementations, weights ofdownlink events (e.g., communication of imagery from the satellite to aground link) can be separately weighted and may be interleaved amongimaging events (e.g., taking an image of a region below the satellite).The weights may be dynamically determined based on one or moreheuristics based at least partly on one or more of the time necessary todownlink all imagery on board the satellite, the time available todownlink data, etc. In some implementations, the weight(s) for downlinkevent(s) and the weight(s) for imaging event(s) can be separated by anorder of magnitude.

Example embodiments of the present disclosure can be used to manage anetwork of imaging satellites to quickly respond to image acquisitionrequests. Requests for images can change rapidly and it is advantageousto update schedules of events on each satellite in near real-time toreduce or eliminate missed opportunities for acquiring timely imagery orperforming other time-sensitive tasks. In addition, example aspects ofthe present disclosure can be used to efficiently utilize the resourcesof the imaging satellites in the constellation. Balancing a desire forrapid schedule updates and efficient satellite use, a scheduling systemcan advantageously be configured to produce near optimal schedules ofevents which avoid constraint violations, while producing theseschedules rapidly (e.g., in near real-time).

Although certain goals and advantages are described, no singleembodiment necessarily must include each and every such goal andadvantage. Various implementations can be designed to achieve one, some,or all such goals and advantages and/or other goals or advantages.

It will be understood that although much of the description herein is inthe context of scheduling satellites, one or more features of thepresent disclosure can also be implemented in other systems. Forexample, some embodiments of the systems and related methodologiesdisclosed herein can be used in satellite scheduling (e.g., imagingsatellites or communication satellites), air traffic control, emergencyvehicle routing and response systems, on-site repair scheduling, and thelike.

Furthermore, it is to be understood that in finding an optimal ornear-optimal solution to a scheduling problem, a cost or utilizationfunction can be increased or maximized in certain implementations, orreduced or minimized in certain implementations, depending on a contextin which the scheduling problem occurs. Finding a near-optimal solutionto a scheduling problem can mean finding a solution that is sufficientlyclose to or including the optimal solution such that a differencebetween the solution and the optimal solution is less than a tolerance.

Terminology

Unless explicitly indicated otherwise, terms as used herein will beunderstood to imply their customary and ordinary meaning. For example,pair-wise constraint is a broad term and is to be given its ordinary andcustomary meaning to a person of ordinary skill in the art (e.g., it isnot to be limited to a special or customized meaning), and includes,without limitation, constraints that prohibit an event based solely onproperties of an immediately preceding event. For example, two imagecollection events are pair-wise constrained if there is insufficienttime between the first image collection event and the second imagecollection event to change a pointing direction of an imaging satelliteto perform the second image collection event.

Cumulative constraint is a broad term and is to be given its ordinaryand customary meaning to a person of ordinary skill in the art (e.g., itis not to be limited to a special or customized meaning), and includes,without limitation, constraints that prohibit an event based onproperties of preceding events. For example, an image collection eventcan be constrained if by performing the event the temperature of acamera acquiring the image would exceed acceptable temperature limitsdue at least in part to prior events.

In some implementations, a constellation of satellites can include anytype of satellite including but not limited to satellites,mini-satellites, micro-satellites, nano-satellites, and so forth.Micro-satellite is a broad term and is to be given its ordinary andcustomary meaning to a person of ordinary skill in the art (e.g., it isnot to be limited to a special or customized meaning), and includes,without limitation, satellites with a mass less than or equal to about500 kg and/or physical dimensions less than or equal to about 125 cm×125cm×175 cm, or satellites that launch as a secondary payload on a launchvehicle. According to some conventions, satellites having a mass lessthan or equal to about 500 kg are classified as small satellites withfurther divisions being made based on their mass. For example, in oneclassification system, small satellites are deemed mini-satellites whenthey have a mass between about 100 kg and 500 kg, micro-satellites whenthey have a mass between about 10 kg and 100 kg, nano-satellites whenthey have a mass between about 1 kg and 10 kg, pico-satellites when theyhave a mass between about 0.1 kg and 1 kg, and femto-satellites whenthey have a mass less than or equal to about 100 g. However, anyreference to micro-satellite, mini-satellite, or small satellite in thisdisclosure should be understood to mean the general class of satelliteshaving a mass less than or equal to about 500 kg and/or physicaldimensions less than or equal to about 125 cm×125 cm×175 cm; and not tothe more specific classification of satellites identified herein orother similar classification schemes.

Overhead image is a broad term and is to be given its ordinary andcustomary meaning to a person of ordinary skill the in the art (e.g., itis not to be limited to a special or customized meaning) and includes,without limitation, satellite images captured by satellites inearth-orbit, or other overhead images captured by aircraft (e.g.,airplanes, helicopters, drones, unmanned aerial vehicles (UAV),balloons, etc.) surveying a geographic region, and the like. In somecases, the overhead image may be of an astronomical object rather than aterrestrial object.

Example Network of Imaging Satellites

FIG. 1 illustrates a representation of an example constellation 10 ofimaging micro-satellites 12 in a low-earth orbit, a control system 14, aground communication system 16, and an example of a target image area18. Embodiments of the systems and methods described herein can be usedto schedule events in the constellation 10 including, for example,determining which micro-satellite 12 is to acquire an image of thetarget image area 18, when the image is to be acquired, when the imageis to be communicated to the ground communication system 16, and/orother scheduling events. The image can include a plurality of images,video, etc. In some implementations, the imaging micro-satellites 12 caninclude an image acquisition system configured to acquire multi-spectraland/or pan-spectral images or videos of the target image area 18. Theimaging micro-satellites 12 can be owned and/or operated by a singleentity or multiple entities. In various implementations, theconstellation 10 may include 2, 4, 8, 10, 12, 16, 24, 30, or some othernumber of satellites. Although FIG. 1 shows an example constellation ofmicro-satellites 12, in other implementations the constellation 10 caninclude additional or different types of satellites includingtelecommunications satellites, mini-satellites, and so forth.

The control system 14 can include functionality that implementsembodiments of the scheduling system disclosed herein so as to scheduleevents in the constellation. For example, the control system 14 caninclude embodiments of the control system 100 described with referenceto FIGS. 2 and 3 . The control system 14, 100 can include the schedulingmodule 104 described with reference to FIGS. 2-4 and 9 . Scheduledevents can include one or more tasks to be performed, data to becollected, information to be received or transmitted, duration, desiredstart time, desired end time, desired results, or any combination ofthese. For example, for an imaging satellite, events can be any task tobe performed by the imaging satellite and can generally include, withoutlimitation, imagery collection (e.g., of the target image area 18),imagery downlink (e.g., to the satellite ground communication station16), and onboard maintenance.

Scheduling events for a constellation of satellites can becomputationally difficult, particularly as the number of satellites inthe constellation increases. Embodiments of the systems, methods, andalgorithms described herein advantageously can be used to scheduleevents in such constellations efficiently and in real-time or nearreal-time. For example, the control system 14 can utilize any methoddescribed herein for producing optimal or near-optimal schedules, suchas the example methods 500 and 700 described herein with reference toFIGS. 5 and 7 . In addition, the control system 14 can implement optimalsatellite scheduling with human collaboration using directed acyclicgraphs according to example aspects of the present disclosure asdescribed with reference to FIGS. X to X.

Example Scheduling Engine Systems and Methodologies

Creating a schedule of events or tasks for an object in a system can bea difficult and computationally intensive problem. One reason is that anobject in a system can be subject to various constraints that limit theorder and/or number of tasks that can be accomplished. Constraints canbe pair-wise constraints, meaning that an event is constrained basedsolely on properties of an immediately preceding event, or cumulativeconstraints, meaning that an event is constrained based at least in parton a history of prior events. For example, a slew rate of an imagingsatellite (e.g., a micro-satellite 12 in FIG. 1 ) can be considered apair-wise constraint because whether an image can be acquired depends atleast in part on whether the imaging satellite can change orientationfrom a previous task in time to acquire an image of a targeted area. Theimaging satellite can also be subject to cumulative constraints, suchas, for example, duplication constraints, temperature considerations,energy requirements, or data storage. As another example, a pair-wiseconstraint for an emergency response vehicle can be a combination of adistance between tasks and a typical duration of a task. The emergencyresponse vehicle can also be constrained by cumulative constraints, suchas a quantity of an expendable resource that the vehicle is capable oftransporting.

Furthermore, systems can include multiple objects to be scheduled,increasing the complexity of the problem. The complexity can increasewhere a schedule of events for a first object affects a schedule ofevents for a second object. For example, if a first imaging satellite ina constellation of imaging satellites is schedule to acquire an image ofa targeted area, a duplication constraint can dictate that a secondimaging satellite not acquire an image of the targeted area to avoidduplicative image acquisitions which may be undesirable. As anotherexample, air traffic control systems can schedule a landing and approachfor a first aircraft which affects a landing and approach of a secondaircraft.

In some circumstances, it can be desirable to create a schedule ofevents relatively quickly to be able to respond effectively to dynamicsituations. Dynamic situations can be those where new events or tasksare being requested or constraints are being updated such that it isdesirable to alter a previous schedule on a time scale sufficient toincorporate the new events or constraints without significantlydisrupting the objects' performance. To achieve the desired agility withrespect to creating updated schedules, some embodiments provide for acontrol and scheduling system that can be configured to create aschedule of events that is near-optimal (or optimal) in maximizingutilization (or minimizing a cost function) of objects in a system andcommunicate the schedule of events to the objects. In some embodiments,the control and scheduling system can create a schedule of events innear-real time. In some embodiments, the control and scheduling systemcan create a schedule of events on a time scale that is less than orequal to a typical length of time between consecutive events.

In some embodiments, a control and scheduling system is provided thatcan be configured to create a global schedule of tasks for a system ofobjects wherein the global schedule does not violate pair-wise,cumulative, or duplication constraints. In some embodiments, the controland scheduling system can use directed acyclic graphs to find a desiredpath through a sequence of events that satisfies the constraints of thesystem. By using directed acyclic graphs, the scheduling problem canbecome solvable in polynomial-time, thereby providing an advantage incomputation time over other methods of solving scheduling problems ofthis type which are generally NP-hard. Moreover, the control andscheduling system can take advantage of parallelization to solvemultiple graphs or aspects of the same graph at the same time, therebyincreasing the speed or reducing the time to produce schedules. In someembodiments, the control and scheduling system exhibits a sub-linearscaling relationship between a number of objects in the system andcomputing power or time used to create schedules for the objects. As aresult, some implementations of the control and scheduling system canproduce a schedule of events in near real-time or on a time scale thatis less than or comparable to an average length of time between events.Producing a schedule of events in near real-time can include producingthe schedule in less than about 20 minutes, in less than about 15minutes, in less than about 10 minutes, in less than about 5 minutes, orin less than about 1 minute.

FIG. 2 shows a block diagram of an example embodiment of a controlsystem 100 configured to control one or more objects 102. The controlsystem 100 can control the objects 102 by analyzing information (e.g.,events to be performed, priorities of events, event or objectconstraints, etc.), creating an efficient schedule of events based atleast in part on the analyzed information, and commanding the objects toperform the scheduled events. The control system 100 includes ascheduling module 104 configured to receive information about events,priorities, and constraints and to produce a schedule of events. Thecontrol system 100 includes a command module 106 configured to receivethe schedule of events from the scheduling module 104 and convert itinto commands. The command module 106 can be configured to communicatethose commands to the objects 102 or to another system that cancommunicate the commands to the objects 102. The control system 100 canbe configured to produce a schedule and command the objects 102 toaccomplish the events on the schedule in a relatively efficient mannerwhile satisfying defined constraints. The control system 100 can beconfigured to update the schedule relatively rapidly to, for example,dynamically incorporate new tasks, modify existing tasks, remove tasks,add constraints, modify constraints, remove constraints, modifypriorities, or any combination of these.

The control system 100 includes a scheduling module 104 configured toproduce an efficient or near-optimized schedule of events. A schedule ofevents can include, for example, a list of events, tasks, activities, orroutines for one or more objects and corresponding start times of eachevent. The scheduling module 104 receives events from an event system108, pair-wise constraints from a pair-wise constraint database 110,cumulative constraints from a cumulative constraint database 112, and/orpriority information from a prioritization system 114. The schedulingmodule 104 can produce a schedule of events that it sends to the commandmodule 106. The schedule of events can be for a particular object 102 orit can be a global schedule with events to be performed by one or moreobjects 102. Thus, the scheduling module 104 can produce a globallyoptimal or near-optimal schedule for a plurality of objects 102, such assatellites in a constellation of satellites.

In some embodiments, the scheduling module 104 can receive one or moreevents from the event system 108 and create a schedule that increases ormaximizes a utilization function based at least in part on the one ormore events. The utilization function can incorporate information aboutthe events and the objects 102 such that increasing or maximizing thefunction results in a schedule that efficiently or near-optimallyaccomplishes the defined events. For example, the scheduling module 104can receive or retrieve prioritization information related to eventsreceived from the event system 108 and construct a schedule thatincreases or maximizes the utilization function based at least in parton the prioritization information. As another example, the schedulingmodule 104 can receive or retrieve constraint information from thepair-wise constraint database 110 or cumulative constraint database 112and construct a schedule of events that satisfies the constraints whileincreasing or maximizing the utilization function.

As described more fully herein, certain embodiments of the schedulingmodule 104 can create efficient or optimal schedules dynamically throughthe use of directed acyclic graphs. For example, by using directedacyclic graphs, the scheduling module 104 can find an optimal or nearoptimal schedule while incorporating information about utilizationfunctions, constraints, and prioritization. This graph-based approach toscheduling can result in a relatively fast algorithm that can producenear-optimal schedules for relatively large and complex systems ofobjects. The graph-based approach can respond dynamically tomodifications, additions, or deletions of input parameters in arelatively quick manner compared to typical non-graph-based approaches.For example, the scheduling module 104 can be configured to incorporatechanges in tasks, events, constraints, priorities, utilization function,or any combination of these and create a new schedule relativelyquickly. In some embodiments, the scheduling module 104 can produce anear-optimal schedule using a directed graph-based approach about anorder of magnitude faster than if it were to employ non-graph-basedtechniques.

The control system 100 includes a command module 106 configured toconvert the schedule produced by the scheduling module 104 into commandsto send the objects 102. The command module 106 can include a moduleconfigured to receive schedule information. The module can convert theinformation in the schedule to a set of commands to be delivered to oneor more objects 102. In some embodiments, the command module 106includes a communication module configured to communicate the set ofcommands to the one or more objects 102. For example, the command module106 can include an array of antennas configured to transmit controlinstructions based at least in part on a received schedule to one ormore satellites. The satellites can receive the transmitted instructionsand perform the requested tasks at designated times. The command module106 can dynamically update the control instructions based at least inpart on updated scheduling information received from the schedulingmodule 104.

The objects 102 can be one or more satellites, vehicles, machines,people, group of people, or some combination of people and machinescapable of being controlled. In some embodiments, the objects 102comprise satellites configured to respond to control instructionsreceived from a control system 100. For example, in response to controlinstructions received from the control system 100, a satellite canadjust its attitude, transfer stored data to a ground station at adesignated time based, operate an onboard system in a defined mannerbased, perform a maintenance routine, acquire an image with an imagingsystem, or any combination of these or the like. In some embodiments,the objects 102 are aircraft such as airplanes or helicopters, emergencyvehicles, repair teams, or the like.

The control system 100 can receive information from the event system108. The event system 108 can be a system that creates, collects,receives, generates, and/or organizes events to be performed by theobjects 102. An event can be a collection of instructions and/orinformation as defined by the event system 108, and can include, forexample, one or more tasks to be performed, data to be collected,information to be received or transmitted, duration, desired start time,desired end time, desired results, or any combination of these. Forexample, for an imaging satellite, events can be any task to beperformed by an imaging satellite and can generally include, withoutlimitation, imagery collection, imagery downlink, and onboardmaintenance. Imagery can include still images and/or video. The eventsystem 108 can collect event requests from other systems. For example,the event system 108 can include a user interface and receive requestsfrom a user. The event system 108 can interface with other systems thataggregate event requests for the objects 102. The event system 108 canreceive or produce event requests based at least in part on a setschedule of events, such as routine scheduled maintenance. The eventsystem 108 can produce event requests based at least in part onsatisfaction of defined criteria, such as transmitting information whenin range of a receiving station. The event system 108 can transmit anevent or list of events to the scheduling module 104 at regularintervals, upon request from the control system 100, upon receiving orproducing a new event request, or any combination of these. As describedmore fully herein with reference to FIGS. 5 and 6 , events can be usedto define nodes in a graph-based approach to finding a desirableschedule.

The control system 100 can be configured to retrieve or receivepair-wise constraints from the pair-wise constraint database 110.Pair-wise constraints can be a property of the objects 102 that placefunctional limits on the objects' 102 ability to perform consecutiveevents. A pair-wise constraint can mean that whether the object 102 iscapable of performing an event is determined based at least in part onproperties of an immediately preceding event. For example, consecutiveimage collection events in an imaging satellite can be constrained by asatellite's agility. Agility refers to an ability of a satellite to slewfrom one pointing angle to another pointing angle within a definedperiod of time. For example, if a first collection has a first end timeand a first pointing angle and a second collection has a second starttime and a second pointing angle, then a pair-wise constraint would beviolated if a maximum slew rate of the satellite would not be sufficientto transition the satellite from the first pointing angle to the secondpointing angle in the time between the first end time and the secondstart time. As described more fully herein with reference to FIG. 5 ,pair-wise constraints can be used to create connections between nodes ina graph-based approach to finding a desirable schedule.

The control system 100 can be configured to retrieve or receivecumulative constraints from the cumulative constraint database 112.Cumulative constraints can be a property of the objects 102 that placefunctional limits on the objects' 102 ability to perform an event. Acumulative constraint can mean that whether the object 102 is capable ofperforming an event is determined based at least in part on a history ofprior events. For example, an image collection event in an imagingsatellite can be constrained by data capacity limitations, powerrequirements, and/or thermal considerations. As described more fullyherein with reference to FIG. 5 , cumulative constraints can be usedduring a computation of a path through a collection of graphs in agraph-based approach to finding a desirable schedule.

Data capacity limitations can refer to limits on the imaging satellitein terms of storing bits of data and transmitting the bits of data to areceiving station. Data capacity limitations can refer to an amount ofonboard storage on the imaging satellite. Data capacity limitations canrefer to an operational constraint that forces the imaging satellite totransmit all stored data to a receiving station during a datatransmission event. Data capacity limitations are cumulative constraintsbecause a history of prior events determines whether a data capacitylimitation would be violated. For example, if onboard storage is nearingmaximum capacity, attempting to store an additional image acquisitioncould require more data storage than is available. The additional imageacquisition event would therefore violate the cumulative constraint.

Power requirements can refer to an ability of the imaging satellite tokeep its subsystems provided with enough power to function. The imagingsatellite can have various source of power such as solar panels and/orbatteries. Different operational and/or situational states of theimaging satellite can be power-positive, such as when the imagingsatellite is exposed to sunlight and not acquiring imagery, orpower-negative, such as during image acquisition. An energy budget ofthe imaging satellite can be managed through the use of a powerrequirement cumulative constraint to ensure that there is sufficientpower on the imaging satellite to perform desired or critical tasks.

Thermal considerations can refer to an ability of the imaging satelliteto safely keep a temperature of its components within safe-operatingmargins. For example, components of the imaging satellite can includethe camera, the payload electrical subsystem, and the payload radiosubsystem. The temperature of components can vary depending onoperational and situational states, such as whether the system is on orwhether the satellite is exposed to the sun. Whether a particular eventwill result in an unacceptable temperature on a component depends atleast in part on a history of the component. For example, whether animaging event will cause the camera's temperature limit to be violateddepends at least in part on the state of the camera in the timepreceding the event.

The control system 100 can receive priority information from theprioritization system 114. The prioritization system 114 can be a systemthat assigns weights or priorities to events. The priorities can beconfigured to assign a relative weight to events such that events withhigh priorities are preferable to events with low priorities. Theprioritization system 114 can transmit the priorities to the controlsystem 100 for use in the scheduling module 104. The prioritizationsystem 114 can assign priorities to events according to user input,internal algorithms, external factors, or any combination of these. Insome embodiments, the prioritization system 114 can assign a relativelylarge priority to events that are critical, effectively forcing thescheduling module 104 to include the critical events in any schedule itproduces. The prioritization system 114 can assign priorities based atleast in part on a variety of factors such as customer demands, price,timeliness of an event, and other factors. As described more fullyherein with reference to FIG. 5 , priorities can be used to weight edgesbetween nodes for use in computing a path through a collection of graphsin a graph-based approach to finding a desirable schedule.

In some embodiments, the scheduling module 104 and the command module106 are components in a unitary control system 100. In some embodiments,the scheduling module 104 and the command module 106 are physicallydistinct systems configured to communicate with one another through anetwork, direct wired connection, direct wireless connection, or throughanother means. The event system 108, the pair-wise constraints database110, the cumulative constraints database 112, and the prioritizationsystem 114 can be components of a unitary system, part of the controlsystem 100, physically distinct systems, or any combination of these.

FIG. 3 illustrates a block diagram of an example embodiment of a controlsystem 100 incorporating a user interface 120. The control system 100receives input from user input 122 and outputs information about aproposed schedule to the user interface 120. Through user input 122, auser can transmit information concerning events, constraints, and/orpriorities to the control system 100. The user input 122 can be receivedfrom a user via a computing device such as a server, a desktop computer,a laptop, a tablet, a smartphone, a personal digital assistant (PDA),and the like. The user can view results of a scheduling process throughthe user interface 120 (e.g., a user interface on the computing device).In some embodiments, the user can view the results of the schedulingprocess on the user interface 120 and, through the user input 122,provide additional feedback to the control system 100 to achieve a newresult. In some embodiments, the command module 106 will wait for userinput or approval through user input 122 before proceeding with sendingcontrol instructions to object(s) 102.

The user interface 120 can include a display that allows the user toview scheduling information produced by the scheduling module 104. Theuser interface 120 can include elements that allow the user to interactwith the information, simulate changes in schedules according toproposed changes to input parameters, view detailed results about aproposed schedule and/or alternate schedules, and the like. The userinterface 120 can be provided on a server, desktop computer, tablet,smartphone, PDA, or the like.

The user input 122 can provide the user an ability to transmitinformation to the scheduling module 104. The user input 122 can be partof the same system as the user interface 120, the scheduling module 104,the command module 106, the control system 100, or any combination ofthese. The user input 122 can include physical elements that allow theuser to send information to the scheduling module such as, for example,a keyboard, touch screen interface, microphone, camera, joystick,buttons, switches, or other similar user input elements or combinationof elements. In some embodiments, the user interface 120 and the userinput 122 are a unitary system such as a computer, tablet, smartphone,PDA, or the like. In this way, the user can connect to the controlsystem 100 to provide input and guidance regarding controlling objects102. In some embodiments, the user interface 120 and/or the user input122 can communicate with each other and/or with the control system 100via a network. The network can include a wired, wireless, terrestrial,and/or satellite network, which can include a local area network (LAN),a wide area network (WAN), the Internet, and so forth.

In some embodiments, the control system 100 receives information aboutevents, constraints, and/or priorities from external systems ordatabases in addition to receiving information through user input 122.The control system 100 can function without input from the user, but theuser can input information to alter or change the results of thescheduling module 104.

Scheduling Module

FIG. 4 illustrates a block diagram of a scheduling module 104 accordingto some embodiments. The scheduling module 104 can include hardware,software, and/or firmware components used to produce schedules for thecontrol system 100. The scheduling module 104 can be configured toreceive information from various systems, create one or more graphsbased at least in part on the received information, determine adesirable path through the created graphs, and communicate the desirablepath to one or more systems such as the command system 106. Thescheduling module 104 can include a graph module 150, a scheduleanalysis module 152, a controller 154, and object/schedule data storage156. Components of the scheduling module 104 can communicate with oneanother, with external systems, and with other components of the controlsystem 100 over communication bus 158. The scheduling module 104 canemploy any method described herein for producing optimal or near-optimalschedules, such as the example methods 500 and 700 described herein withreference to FIGS. 5 and 7 . In addition, the control system 14 canimplement optimal satellite scheduling with human collaboration usingdirected acyclic graphs according to example aspects of the presentdisclosure as described with reference to FIGS. X to X.

The scheduling module 104 includes a graph module 150. The graph module150 can be configured to create directed acyclic graphs based at leastin part on events and pair-wise constraints. Directed acyclic graphs caninclude nodes which represent events and directed edges which connectnodes and represent allowable sequences of events. FIG. 6 for an exampledirected acyclic graph 600. The graph module 150 of FIG. 4 can receive alist of events from which a schedule of events will be made. For eachevent, the graph module 150 can create one or more nodes representingdiscretized start times and/or duration for the event. Once nodes formore than one event are created, the graph module 150 can create edgesbetween nodes in different events. The graph module 150 can start with afirst node in a first event and attempt to create a directed edgepointing from the first node to a node in a different event. The graphmodule 150 will create the directed edge if connecting the two nodesdoes not violate any pair-wise constraints. The graph module 150 caneffectively force a critical event, if desired, to be included in aschedule by creating a graph where all acceptable paths through thegraph pass through the critical event. A critical event is optional andfor certain schedules no critical events are used. For schedules inwhich a critical event is desired, in order to force the critical event,the graph module 150 may create a graph that is different from a graphthat would have been constructed otherwise, removing edges that do notviolate pair-wise constraints but that would have resulted in bypassingthe critical event. For example, in FIG. 6 some paths through the graphbypass image collection event 610 c. To make image collection event 610c a critical event, the graph module 150 would remove the edges thatdirectly connect nodes in image collection event 610 b to nodes indownlink event 620 a. In making an event a critical event, the graphmodule 150 can also remove some nodes because any path through thosenodes would result in the critical event being missed.

The scheduling module 104 includes a schedule analysis module 152. Theschedule analysis module 152 analyzes paths through graphs produced bythe graph module 150. For each graph, the schedule analysis module 152attempts to find a path through the graph that maximizes or minimizes autilization or cost function. As described more fully with reference toFIG. 5 , the schedule analysis module 152 can check for constraintviolation while maximizing the utilization function. In contrast tosystems that maximize the utilization function first and check forviolation of cumulative constraints after, the schedule analysis module152 can identify nodes in a path which would violate cumulativeconstraints if included during the procedure to find an optimalschedule. The schedule analysis module 152 can remove the node at themoment it finds that its inclusion would violate a cumulativeconstraint. Once removed, the schedule analysis module 152 can proceedin the optimization procedure. In this way, the schedule analysis module152 finds a path through the graph that does not violate any constraintsand that is near-optimal. Near-optimal in this case can include a pathidentified that may not be the path that truly maximizes utilization,but that it is sufficiently close to the optimal path that it issatisfactory. Near-optimal can also include the path that trulymaximized utilization.

Typically, an optimal path through a graph would be a path thatmaximizes the utilization function without violating any cumulativeconstraints, which may require many iterations through the graph todetermine which path through the graph results in this maximumutilization. The schedule analysis module 152 can find a path thatapproaches or achieves maximum utilization with the same or feweriterations, because it identifies paths that violate cumulativeconstraints at the point of constraint violation. When this happens, theschedule analysis module can remove the offending portion of the pathand proceeds with the optimization procedure. It may be the case thatremoving the identified portion of the path does not result in a trulymaximized utilization (e.g., removing a different portion of the pathwould result in a higher utilization), but by removing the offendingportion of the path at the point of constraint violation allows theschedule analysis module 152 to arrive at an optimal or near-optimalpath through the graph with relatively fewer iterations, and thus withgreater speed and/or efficiency. Furthermore, the schedule analysismodule 152 limits removal of an edge or node at a point in the graphbefore constraint violation rather than attempting to remove edges ornodes throughout the graph to achieve an optimized path. Thus, theschedule analysis module 152 can efficiently construct a near-optimalpath through the graph that does not violate any constraints.

The scheduling module 104 includes a controller 154. The controller 154can include one or more hardware processors and can be used by any ofthe other components, such as the graph module 150 or the scheduleanalysis module 152, to process information. As used herein, the term“processor” refers broadly to any suitable device, logical block,module, circuit, or combination of elements for executing instructions.The controller 154 can be any conventional general purpose single- ormulti-chip microprocessor. In addition, the controller 154 can be anyspecial purpose microprocessor such as a digital signal processor. Thevarious illustrative logical blocks, modules, and circuits described inconnection with the embodiments disclosed herein can be implemented orperformed with a general purpose processor, a digital signal processor(DSP), an application specific integrated circuit (ASIC), a fieldprogrammable gate array (FPGA), or other programmable logic device,discrete gate or transistor logic, discrete hardware components,circuitry, or any combination thereof designed to perform the functionsdescribed herein. A general purpose processor, such as controller 154,can be a conventional microprocessor, but the controller 154 can also beany conventional processor, controller, microcontroller, or statemachine. Controller 154 can also be implemented as a combination ofcomputing devices, e.g., a combination of a DSP and a microprocessor, aplurality of microprocessors, one or more microprocessors in conjunctionwith a DSP core, or any other such configuration.

The scheduling module 104 includes object/schedule data storage 156.Data storage 156 can be coupled to the other components of thescheduling module 104, such as the controller 154, the graph module 150,and the schedule analysis module 152. Data storage 156 can refer tonon-transitory electronic circuitry that allows information, typicallycomputer data, to be stored and retrieved. Data storage 156 can refer toexternal devices or systems, for example, disk drives, optical drives,or solid state drives. Data storage 156 can also refer to fastsemiconductor storage (chips), for example, Random Access Memory (RAM)or various forms of Read Only Memory (ROM), which are directly connectedto the one or more processors of the scheduling module 104. Other typesof memory include bubble memory and core memory.

Example Method for Finding Near-Optimal Schedules

The scheduling module 104 can use various methods utilizing directedgraphs for finding an optimal or near-optimal schedule of events. Thescheduling problem as generally described can belong to a class ofproblems that are NP-hard, due at least in part to the fact that it isan optimization problem mixing continuous variables (e.g., start time ofan event) and discrete variables (e.g., choosing which events toperform). One result of graph theory is that finding a longest orshortest path through a set of directed acyclic graphs is generallysolvable in polynomial time.

As generally constructed, the scheduling problem attempts to find asequence of events that maximizes (or minimizes) a utilization (or cost)function. For example, a cost function can incorporate a binaryindicator, c_(i), for whether an event, i, is selected; a time ofcompletion for an event, t_(i); and a priority or weight for the event,w_(i). Expressed mathematically, the problem is to find a maximum of thesum of the product of the binary indicator and the priority, c_(i)w_(i),where the event, i, has a start time, t_(i), that is after an earliestacceptable start time, st_(i), and before a latest acceptable starttime, et_(i):

max Σ_(i=0) ^(N) c _(i) w _(i) Where c _(i)∈0,1 and st_(i) ≤t _(i) ≤eti

To incorporate constraints, additional criteria are used. For example, apair-wise constraint can be included, pw_(con)(t_(i)+1, t_(i)), and acumulative constraint can be included, Xi:

$\max{\sum_{i = 0}^{N}{c_{i}w_{i}}}$ s.t.(∀i): c_(i) ∈ 0, 1t_(i) > st_(i) t_(i) < et_(i) t i + 1 - ( t i + i ) ≥ c i + 1 × c i × pwcon ( t i + 1 , t i ) X_(i) < X_(max)

The pair-wise constraint can depend on a time between an end of a firstevent, t_(i+τi), and a beginning of a second event, t_(i+1), where τ_(i)is a duration of event i. For an imaging satellite, a pair-wiseconstraint can be an agility function which depends on pointing angles,θ, between events. Cumulative constraints for the imaging satellite caninclude a temperature of the camera, T_(CAM), a temperature of anelectrical system, T_(ES), a temperature of a radio system, T_(RS), datastored at the end of an event, d, and energy remaining after an event,e. The function to maximize, in this case, would then be:

$\max{\sum_{i = 0}^{N}{c_{i}w_{i}}}$ s.t.(∀i): c_(i) ∈ 0, 1t_(i) > st_(i) t_(i) < et_(i) t i + 1 - ( t i + i ) ≥ c i + 1 × c i ×agility ( θ i + 1 ( t i + 1 ) , θ i ( t i ) )T_(CAM_(i)) < T_(CAM_(max)) T_(ES_(i)) < T_(ES_(max))T_(RS_(i)) < T_(RS_(max)) d_(i) < d_(max) e_(i) < e_(max)

In this example, the utilization function is a sum of the priorityweights for the events which are actually selected. The output of theoptimization will be the subset of events which will be performed (andtheir associated start times) which maximizes the utilization functionwhile obeying the constraints of the system. As stated above, thisoptimization problem is difficult because it is a mix of discrete andcontinuous variables.

The cumulative constraints can be calculated over time. To do so,information at a previous stage can be used along with a function whichdescribes how the cumulative constraint develops over time. The resultis an equation which represents each variable associated with acumulative constraint at a given point in time, examples of which aregiven in the below equations:

T _(cam) _(i+1) =c _(i+1)·cam_(ON)(t _(i+1),

_(i+1) ,T _(cam) _(i) ,t _(i)+τ_(i))+(1−c _(i+1))·cam_(OFF)(t _(i+1) ,T_(cam) _(i) ,t _(i)+τ_(i)).

T _(pes) _(i+1) =c _(i+1)·pes_(ON)(t _(i+1),

_(i+1) ,T _(pes) _(i) ,t _(i)+τ_(i))+(1−c _(i+1))·pes_(OFF)(t _(i+1) ,T_(pes) _(i) ,t _(i)+τ_(i)).

T _(prs) _(i+1) =c _(i+1)·prs_(ON)(t _(i+1),τ_(i+1) ,T _(prs) _(i) ,t_(i)+τ_(i))+(1−c _(i+1))·prs_(OFF)(t _(i+1) ,T _(prs) _(i) ,t_(i)+τ_(i))

d _(i+1) =c _(i+1)·data_(ON)(τ_(i+1) ,d _(i)

e _(i+1) =c _(i+1)·energy_(ON)(t _(i+1),τ_(i+1) ,e _(i) ,t_(i)+τ_(i))+(1−c _(i+1))·energy_(OFF)(t _(i+1) ,e _(i) ,t _(i)+τ_(i))

In the above equations, functions are used which represent effects onthe variables when a particular system is on (e.g., X_(ON)( . . . )) andoff (e.g., X_(OFF)( . . . )).

One approach to finding an optimal path is to use directed graphs. Usingthis approach, each event becomes a node in a graph with edgesconnecting nodes representing sequences of events that do not violatedefined constraints. FIG. 6 depicts an example of a directed acyclicgraph 600. The edges can be weighted to represent their cost, where asum total of the cost can be maximized or minimized depending on theapplication. For example, for an imaging satellite application, thelongest path or the maximum cost or utility can represent the mostdesirable list of events that can be accomplished within a given timeframe. A path through the directed graph represents an acceptableschedule of events. Algorithms for finding a shortest path through agraph include, for example, Dijkstra's algorithm, described in E. W.Dijkstra, “A Note on Two Problems in Connexion with Graphs,” NumerischeMathematik, Vol. 1, No. 1, pages 269-271 (1959). Other algorithms forfinding a shortest or longest path through a graph can be used in otherembodiments, such as, e.g., the Bellman-Ford algorithm, theFloyd-Warshall algorithm, or Johnson's algorithm.

FIG. 5 illustrates a flow chart of an example method 500 for finding anear-optimal schedule using directed graphs. For ease of description,the blocks in the method 500 will be described as being performed by thescheduling module 104. Blocks in the method 500, however, can beperformed by various systems or modules or combination thereof. Inaddition, throughout the description reference will be made to anexample directed acyclic graph 600 as illustrated in FIG. 6 .

In block 505, the scheduling module 104 creates a graph having nodes andedges connecting nodes. For example, the scheduling module 104 cancreate the graph 600 having events 610 a, 610 b, 610 c, 620 a, 620 b,and 630 where each event has one or more nodes corresponding toreference numbers 612 a, 612 b, 612 c, 622 a, 622 b, and 632. Edges 614connect nodes where an edge connecting two nodes is drawn if performingboth nodes in sequence does not violate pair-wise constraints. Becauseno edges are included in the graph which would violate pair-wiseconstraints, any path through the graph is not pair-wise constrained. Atthis point, the scheduling module 104 can incorporate critical eventinformation. A critical event can be an event that is required or highlydesirable. A particular graph may or may not include one or morecritical events. The scheduling module 104 can alter the graph such thatthe critical event or events are not bypassed in any way, or that allpaths through the graph include nodes in the critical event or events.For example, in FIG. 6 event 610 c can be made critical by removingedges 614 that connect nodes 612 b in image collection event 610 b tonodes 622 a in downlink event 620 a. The scheduling module 104 canreceive information about events, constraints, priorities, criticalevents, and the like from sources such as, for example, a user or users,remote modules or systems, local modules or systems, data storage, orthe like.

In block 510, the scheduling module 104 selects a node. There can be astarting node and a corresponding ending node, with all other nodesfalling between the starting node and ending node. The scheduling module104 can iterate through the nodes in the graph one at a time to find anoptimal or near-optimal path. In block 515, the scheduling module 104selects an incoming edge for the selected node. The incoming edge is anedge that originates in a preceding node and terminates at the selectednode. The scheduling module 104 can iterate through incoming edges atthe selected node to determine the edge that has the highest incomingvalue that does not violate cumulative constraints.

In block 520, the scheduling module 104 checks the value of the selectedincoming edge to determine whether it results in a higher total value ofthe utilization function. The value of the selected incoming edge cancorrespond to a weight or priority value assigned to the edge. The valueof the selected incoming edge can correspond to a value of theutilization function of an incoming path. Thus, the scheduling module104 can select the incoming edge which would result in the highestutilization value. Where the value of the selected incoming edgecorresponds to a value of an incoming path, not just an individualincoming edge, the scheduling module 104 can select the incoming paththat results in the highest utilization value.

In block 525, the scheduling module 104 checks whether including theselected incoming edge in the path would violate any cumulativeconstraint. The selected incoming edge can include information about acorresponding incoming path. The scheduling module 104 can calculate avalue of one or more parameters related to cumulative constraints tocheck whether inclusion of the preceding path would result in aviolation of the constraints. If a constraint is violated, the incomingpath is not included in the final path. In this way, the schedulingmodule 104 can construct a path that does not violate any constraintsand that is optimal or near optimal. It may be near optimal where apreceding edge other than the incoming edge is a primary contributor toa violation in the cumulative constraint. In that case, removal of theprimary contributor may result in a path with a higher utilization. Forexample, if the scheduling module 104 determines that including theincoming edge would violate a cumulative constraint, it may be thatremoving a predecessor edge included in the incoming path would resultin an incoming path that does not violate cumulative constraints butthat would result in a higher utilization value. However, to discoverthe optimal predecessor edge to remove can require more time and/orcomputational power than is desirable. Thus, utilizing the method 500,the scheduling module 104 can determine, in a relatively quick and/orefficient manner, a path that is sufficiently close to the optimal pathto be satisfactory for an intended purpose. For example, in aconstellation of imaging satellites, it may be desirable or morevaluable to be able to quickly update schedules to respond to changingneeds and/or customer requests rather than finding the maximumutilization of the constellation.

If the selected incoming edge results in a higher total value of theutilization function and does not violate any cumulative constraints,the scheduling module 104 includes the originating node as thepredecessor node for the currently selected node in block 530.

In block 535, the scheduling module 104 checks whether all the incomingedges have been checked. If there are remaining incoming edges, thescheduling module 104 returns to block 515. If all incoming edges havebeen checked, the scheduling module 104 checks whether all nodes in thegraph have been analyzed in block 540. If there are additional nodes,the scheduling module 104 returns to block 510 to select a differentnode. If all nodes have been analyzed, the scheduling module 104concludes the method by producing the optimized or near-optimizedschedule by backtracking via the selected predecessor nodes in block545. In FIG. 6 , the optimized or near-optimized schedule corresponds tothe bolded arrows 616 through the graph 600.

In some implementations, the algorithm in blocks 515 through 540 can berepresented as follows:

for i ϵ in-edges_(j) do  if dist_(i) + w_(ij) > dist_(j) then   dist_(j)← dist_(i) + w_(ij)   prev_(j) ← i  end if end forIn the construction, optimization is achieved by looping through nodesand for each node, j, choosing the longest incoming cumulative path,dist_(j). The set in-edges_(j) is all the nodes that have edgesoriginating in a different node and terminating in node j. This set isthe closed set of nodes from which a predecessor node (prev_(j)) will bechosen for node j. The weights, w_(ij), represent the priority orweighted value of the edge connecting nodes i and j.

To incorporate cumulative constraints, the above example algorithm canbe modified to include steps to check for constraint violation:

for i ϵ in-edges_(j) do  if dist_(i) + w_(ij) > dist_(j) then   ifCUMUL₁ (t_(j),  

_(j), X_(i), t_(i) +  

_(i))) < X_(max) then    X_(j) ← CUMUL₁ (t_(j),  

_(j), X_(i), t_(i) +  

_(i)))    dist_(j) ← dist_(i) + w_(ij)    prev_(j) ← i   end if  end ifend for

where CUMUL₁ represents a function that calculates a value for aparameter, X, where the parameter corresponds to a cumulativeconstraint. The function can calculate a value of the parameter assumingthe two events in question are performed. The function can incorporateinformation about prior events such that the function represents thevalue of the parameter for a particular incoming path. Thus, thescheduling module 104 can identify edges that result in violations ofcumulative constraints at the time the constraint is violated. Thescheduling module 104 can remove that edge from the path and continuethrough the method 500 to find the optimal path that does not includethe edge which violates the cumulative constraint.

Constraints can be added, removed, or modified using this and similarformulations, allowing for schedules to be updated dynamically accordingto changing circumstances. For example, an additional constraint can beadded to the system. The additional constraint would result in adding anadditional “if” statement in the above algorithm with an appropriateequation and/or comparison. Similarly, a constraint can be removed byremoving the corresponding “if” statement. Similarly, a constraint canbe modified by modifying the corresponding constraint value (e.g.,X_(max)) or constraint function (e.g., CUMUL₁). Examples of additionalconstraint functions are provided below:

cam_(ON)(t _(j),

_(j) ,T _(cam) _(i) ,t _(i)+

_(i))<T _(cam) _(max)

pes_(ON)(t _(j),

_(j) ,T _(pes) _(i) ,t _(i)+

_(i)))<T _(pes) _(max)

data_(ON)(

_(j) ,d _(i)))<d _(max)

energy_(ON)(t _(j),

_(j) ,e _(i) ,t _(i)+

_(i)))<e _(max)

Additionally, where such constraint functions are utilized,corresponding changes to the constraint values should be incorporatedinto the function:

T _(cam) _(j) ←cam_(ON)(t _(j),

_(j) ,T _(cam) _(i) ,t _(i)+

_(i)

T _(pes) _(j) ←pes_(ON)(t _(j),

_(j) ,T _(pes) _(i) ,t _(i)+

_(i))

d _(j)←data_(ON)(

_(j) ,d _(i))

e _(j)←energy_(ON)(t _(j),

_(j) ,e _(i) ,t _(i)+

_(i))

In some embodiments, the scheduling module 104 can utilizeparallelization to solve multiple graphs (or aspects of the same graph)at the same time. For example, the node-centric algorithm embodied bythe method 500 can be run for many different nodes at the same timewhere nodes are independent of preceding nodes (e.g., the nodes are notconnected by an edge of combination of edges). Independent nodes can beoptimized in parallel which effectively flattens the graph so that itstotal computational time can be on the order of the largest number ofedges between the starting and ending nodes (which in general is lessthan or equal to the total number of nodes in the graph). In someembodiments, the scheduling module 104 exploits parallelization byoptimizing different graphs representing different spans of time inparallel. In some embodiments, the scheduling module 104 can createmultiple clones of graphs with differences between them to exploitparallelization and find a highest-valued path among the near-optimalpaths produced, thereby allowing the scheduling module 104 to find ormore closely approximate the optimal path through the graph. Forexample, the scheduling module 104 can clone graphs and remove edgessuspected of causing a cumulative constraint to be violated. Suspectedges can be limited to those edges that occurred prior in time to theconstraint violation. Due at least in part to the removal of suspectedges, the scheduling module 104 can identify a path through the graphthat approaches the optimal path. Due at least in part to limiting theremoval of edges to those that happened prior in time, the schedulingmodule 104 can relatively quickly determine a desirable path through thegraph. Parallelization can be advantageous due at least in part to theavailability of massively parallelizing computation using commodityhardware and software for distributed computing such as the APACHE™HADOOP™ software library (available from The Apache SoftwareFoundation).

As referenced above, FIG. 6 illustrates an example graph 600 showingpossible paths 614 (dashed lines) through the graph and a near-optimalpath 616 (heavy solid line). The graph 600 can represent events for aconstellation of imaging satellites such as the example constellation 10shown in FIG. 1 . The graph includes image collection events 610 a, 610b, and 610 c; downlink events 620 a and 620 b; and an onboardmaintenance event 630. For each event 610 a, 610 b, 610 c, 620 a, 620 b,and 630, there are one or more nodes 612 a, 612 b, 612 c, 622 a, 622 b,and 632. Edges 614 represent acceptable sequences of events where thesequence is not pair-wise constrained. For example, an edge 614originating in a node 612 a and terminating in node 612 b indicates thatperforming the image collection event 610 a corresponding to aparticular node 612 a followed by performing the image collection event610 b corresponding to a particular not 612 b does not violate anypair-wise constraints such as an agility constraint. In the graph 600,the vertical axis 605 a corresponds roughly to slewing angle and thehorizontal axis 605 b corresponds to time. Some events in the graph 600do not require a defined pointing angle, such as the onboard maintenanceevent 630, but is represented as having a particular angle in the graph600. This does not mean that a pointing angle is assigned to the onboardmaintenance event 630 unless it is appropriate to do so. The horizontallength of the events in the graph can represent acceptable start timesfor the particular event. For example, image collection event 610 a canhave a defined duration corresponding to a time that the imagingsatellite is over a targeted region on the Earth.

To construct a single graph 600, the scheduling module 104 can divideevents into groups, where each group is represented by a different graph600. To divide the groups, the scheduling module 104 can find gapsbetween events where consecutive events are not pair-wise constrained.For example, for a constellation of imaging satellites, the schedulingmodule 104 can collect all events to be performed over a week's time.For these events groups of events can be created where a divisionbetween one group and the next is defined as where the first event inone group is more than two minutes after last event in the predecessorgroup. Two minutes is used as an example of a maximum time for animaging satellite to slew 180 degrees. This number may change underdiffering circumstances.

Example Embodiment of a System for Scheduling a Constellation of ImagingSatellites

FIG. 7 illustrates a flow diagram of an example embodiment of a method700 for finding near-optimal schedules of events for a constellation ofsatellites subject to duplication constraints. The method 700 includescreating a graph of graphs, finding an optimized path through the graphof graphs, and checking whether the optimized path violates duplicationconstraints. Duplication constraints can be limits on the number oftimes a certain event occurs over a particular timespan or within aconstellation of satellites. For ease of description, the blocks in themethod will be described as being performed by the scheduling module104. Blocks in the method 700, however, can be performed by varioussystems or modules or combination thereof. In addition, throughout thedescription reference will be made to an example graph of graphs 800 asillustrated in FIG. 8 .

In block 705, the scheduling module 104 creates a plurality of schedulesfor a first timespan. The plurality of schedules for the first timespancan be created using methods described herein, particularly the method500 described herein with specific reference to FIG. 5 . In addition tofinding an optimal or near-optimal path as described herein, thescheduling module 104 can create multiple schedules having differentvalues for a utilization function. In some embodiments, the schedulingmodule 104 finds the k most optimal paths through a particular graph,where k is an integer number greater than or equal to 1. The graphs canbe ordered according to the value of the utilization function of thatgraph. For example, the graph with the highest-valued utilizationfunction can be referred to as the 1-optimal schedule, the nexthighest-valued graph can be referred to as the 2-optimal schedule, andso on until the k-optimal schedule. Referring to FIG. 8 , the graphs onthe left-hand-side represent the k-optimal schedules as determined bythe scheduling module 104. Each graph has a value associated with it, w,representing the value of the utilization function for that graph. Forexample, the 1-optimal graph has a value w₁₁ associated with it, the2-optimal graph has a value w₁₂ associated with it, down to thek-optimal graph which has a value w_(lk) associated with it, where w₁₁is greater than or equal to w₁₂, w₁₂ is greater than or equal to w₁₃,and so on.

In block 710, the scheduling module 104 creates a plurality of schedulesfor a second timespan. The schedules from the second timespan can becreated in parallel with the schedules from the first timespan and inparallel with each other.

In block 715, the scheduling module 104 creates a directed graph whereschedules from the first and second timespan are nodes in the directedgraph. The scheduling module 104 can connect the nodes with edgesoriginating in graphs from the first timespan and terminating in graphsof the second timespan. In some embodiments, more than two timespans areused. The scheduling module 104 can repeat the procedure of findingschedules for a particular timespan and adding those schedules to thegraph of graphs.

In block 720, the scheduling module 104 calculates an optimal paththrough the graph of graphs. Calculating the optimal path can includefinding a path through the graph of graphs that maximizes the sum of theutilization scores of the individual graphs (e.g., w_(ij)). Thisprocedure can be similar to procedures described herein, particularly asdescribed with reference to FIG. 5 .

In block 725, the scheduling module 104 checks for violations ofduplication constraints. Duplication constraints can include limitationson a number of times an event appears in a schedule for a constellationof satellites or over defined timespans. For example, an imagingsatellite can be tasked with collecting imagery of a targeted sub-areawhen it is over a targeted area. An imaging satellite can be over thetargeted area at time 1 and at time 2, or different imaging satellitescan be over the targeted area at time 1 and time 2. For each of time 1and time 2, schedules are created for the imaging satellite(s) usingmethods described herein. It may be that the schedules produced forthose timespans include collecting imagery of the targeted sub-area.However, taking duplicate imagery may not be a desirable use of theimaging satellite as it could be acquiring imagery of another location.In this example, a duplication constraint can be created that restrictsthe number of times imagery is collected for the targeted sub-area.Thus, the scheduling module 104 can check that the optimal path throughthe graph of graphs found in block 720 does not violate any duplicationconstraints.

In some embodiments, duplication constraints can be resolved byincluding sub-optimal schedules in the graph of graphs, as describedabove. For example, in FIG. 8 the 1-optimal graph 805 in time 1 includesan event to collect imagery of a targeted sub-area. The 1-optimal graph855 and 2-optimal graph 860 in time 2 include events to collect imageryof the targeted sub-area as well. Therefore, to avoid violating aduplication constraint that limits the collection of imagery of thetargeted sub-area to 1, the scheduling module 104 creates a schedulethat connects 1-optimal graph 805 in time 1 to 3-optimal graph 865 intime 2, indicated by solid arrow 830.

In some implementations, the algorithm used to find the optimal paththrough the graph of graphs subject to duplication constraints can berepresented as follows:

for i ϵ in-edges_(j) do  if dist; + w_(jj) > dist_(j) then   if s_(j) ∩S_(i) = Ø then    dist_(j) ← dist_(i) + w_(ij)    prev_(j) ← i    S_(j)← s_(j) ∪ S_(i)   end if  end if end for

where, similar to the algorithm described above in reference to FIG. 5 ,optimization is achieved by looping through nodes and for each node, j,choosing the longest incoming cumulative path, dist_(j). Here, the nodesare individual schedules or graphs. The set in-edges₁ is all the nodesthat have edges originating in a different node and terminating in nodej. This set is the closed set of nodes from which a predecessor node(prev_(j)) will be chosen for node j. The weights, w_(ij), represent theoverall score the schedule of the node that is the destination of theedge (e.g., w_(ij) is the score of schedule S_(j)). The nodes, j, havethe property, s_(j), representing all the events that are included inthe schedule represented by node j. The overall schedule up to andthrough node j is represented by S_(j). In this formulation, thealgorithm will string together the most optimal schedules while makingsure to not repeat any events. This can be adjusted to allow for certainevents to be duplicated, or allow duplication of events up to a definednumber of repetitions. For example, to collect imagery over a regionthat is typically covered by clouds, duplication constraints can be setto allow multiple image collection events to be scheduled over thatregion to increase a probability that a satellite can acquire an imagewith a desired lack of cloud coverage. One result of this algorithm maybe that locally sub-optimal schedules can be chosen to create a globallyoptimal schedule.

FIG. 8 illustrates an example graph of graphs 800 showing a path throughthe graphs which increases utilization while avoiding undesirableduplication of events. The graph of graphs 800 includes 1-optimal graph805 for an imaging satellite during a first timespan over a targetedarea which represents the optimal schedule for a first timespan asdetermined by the scheduling module 104. The 1-optimal graph 805includes a schedule of events that includes collecting imagery of atargeted sub-area. The graph of graphs 800 includes sub-optimal graphs810, 815, and 820 for the first timespan, where the sub-optimal graphsdo not include an event to collect imagery of the targeted sub-area. Thegraph of graphs includes 1-optimal graph 855 and 2-optimal graph 860 forthe imaging satellite (or a different imaging satellite) in a secondtimespan over the targeted area. The graphs 855 and 860 include eventsto collect imagery of the targeted sub-area. The graph of graphs 800includes sub-optimal graphs 865 and 870 which do not include events tocollect imagery of the targeted sub-area. Graphs from the first timespanare connected to graphs from the second timespan with edges 825. Theoptimal path that does not violate a duplication constraint dictatingthat imagery be collected once for the targeted sub-area is representedby the thick arrow pointing from 1-optimal graph 805 to 3-optimal graph865. Each graph in the graph of graphs 800 includes a weight factor,w_(ij), representing a utilization value based at least in part on theassociated schedule. Finding the optimal path through the graph ofgraphs 800 can include maximizing the sum of the weights, w_(ij),without violating duplication constraints.

FIG. 9 illustrates a block diagram of an example system 900 forscheduling a constellation of satellites. The system 900 can receiveorders from an order management system 925, analyze satellite schedulesand satellite properties, and calculate a schedule using the satellitescheduling system 904 wherein the schedule is communicated to thesatellites 902 a, 902 b, and 902 c through a satellite control system905 coupled to antennas 915.

The system 900 includes the order management system 925 configured toprocess event requests from control personnel, customers, externalsystems, remote systems, local systems, and the like. For example, theorder management system 925 can be configured to receive orders forimagery collection from customers where an order can include desiredparameters for the collection including geographic region, time frame,cloud cover, number of images, and the like. The order management system925 can assign a priority value to the requested event for use in thesatellite scheduling system 904. The order management system 925 canindicate that a requested event is critical so that the satellitescheduling system 904 can force the event to be included in any producedschedule. The order management system 925 can process received requestsand transmit the processed requests to the orbit analysis system 930.The orbit analysis system 930 can analyze the various orbits of thesatellites 902 a, 902 b, and 902 c in the constellation to determinewhich satellites will be in the correct location to fulfill the request.This information can be transmitted to the satellite scheduling system.

The system 900 includes a satellite maintenance and monitoring system935 configured to request maintenance or diagnostic events. These eventscan be regularly scheduled, requested upon satisfaction of definedcriteria, or requested by a user through the maintenance and monitoringsystem 935. The maintenance and monitoring system 935 can transmitrequests for onboard maintenance events to the satellite schedulingsystem 904. The transmitted events can include information aboutpreferred pointing angle during the event, duration of the event,starting time of the event, other pertinent parameters, or anycombination of these. The satellite maintenance and monitoring system935 can indicate that an onboard maintenance event is critical so thatthe satellite scheduling system 904 can force the event to be includedin any produced schedule.

The system 900 includes a satellite properties database 920 configuredto satellite property information to the satellite scheduling system904. Satellite properties stored in the database 920 can includeinformation about constraints, such as agility constraints, temperatureconstraints, data storage constraints, energy constraints, duplicationconstraints, or any combination of these. The information aboutconstraints can include operational limits and functions used tocalculate the value of a parameter given a particular event. Thesatellite scheduling system 904 can retrieve information aboutsatellites 902 a, 902 b, and 902 c from the database 920 to produceoptimal or near-optimal schedules for the constellation of satellites.

The system 900 includes satellite scheduling system 904 configured tofind optimal or near-optimal schedules for a constellation of satellitesgiven a list of requested events and satellite properties. The satellitescheduling system 904 can be a module similar to the scheduling module104 and can incorporate similar components as described herein withreference to FIGS. 2-4 . The satellite scheduling system 904 can employany method described herein for producing optimal or near-optimalschedules, such as the example methods 500 and 700 described herein withreference to FIGS. 5 and 7 . In addition, the control system 14 canimplement optimal satellite scheduling with human collaboration usingdirected acyclic graphs according to example aspects of the presentdisclosure. In some embodiments, the satellite scheduling system 904 canachieve a schedule that is sufficiently close to the optimal solutionusing the methods described herein. In some embodiments, the satellitescheduling system 904 can produce near-optimal schedules using adirected graph-based approach about an order of magnitude faster than ifit were to employ non-graph-based techniques. The satellite schedulingsystem 904 can be configured to compute a new schedule for one or moresatellites 902 a, 902 b, and 902 c upon receiving a new event request,updated constraints, or updated priority information.

The satellite scheduling system 904 can communicate schedule informationto the satellite control system 905. The satellite control system 905can convert the schedule information to control instructions which canbe transmitted through antennas 915 to the appropriate satellite in theconstellation, where the constellation can comprise one or moresatellites, e.g., SAT-1 902 a, SAT-2 902 b, through SAT-N 902 c. Thesatellite control system 905 can be a distinct system from the satellitescheduling system 904 and can be a remote system relative to thescheduling system 904.

The system 900 can include an event analysis system 910 to providefeedback about executed or missed events from the satellites 902 a, 902b, and 902 c. The satellite scheduling system 904 can receive thisfeedback from the event analysis system 910 and produce updatedschedules based at least in part on this information.

Example Scheduling Using Human Collaboration

As discussed above, the scheduling module 104 according to exampleaspects of the present disclosure can determine a schedule of eventsusing a directed acyclic graph using, for instance, the methods 500 and700 discussed with reference to FIGS. 5 and 7 . According to furtherexample aspects of the present disclosure, the scheduling module 104 cantake into account a user input relating to one or more changes inscheduled events in determining a schedule of events using the directedacyclic graph. For instance, the scheduling module 104 can add orsubtract edges to the directed acyclic graph based at least in part onthe user input.

More particularly, the use of directed acyclic graphs can allow a humanmanager of, for instance, a satellite system, to interact with a pathsolution to the directed acyclic graph and adapt it through user input.The user input can be mapped to changes in the directed acyclic graph(e.g. the addition or removal of edges) which can result to changes inidentifying a near-optimal or optimal path through the directed acyclicgraph. The near-optimal or optimal path can be used to determine anoptimal schedule of events, for instance, for a constellation ofsatellites.

For instance, the satellite scheduling system 904 of FIG. 9 can beconfigured to find optimal or near-optimal schedules for a constellationof satellites given a list of requested events and satellites propertiesand given a user input requesting a change to the one or more of therequested events. More particularly, the satellite scheduling system 904can have knowledge of the capabilities of the satellite via constraintmodels/edge encodings in the directed acyclic graph as well as relativepriority of opportunities with respect to each other via importanceweights in the directed acyclic graph. However, when it comes toassessing the presence/absence of temporal constraints on imaging, suchas cloud cover obscuring a target, the satellite scheduling system 904may be either unaware or cognitively inferior to a human manager of thesatellite system.

According to particular aspects of the present disclosure, a humanmanager can have the ability to force out an event from the schedule ofevents. For instance, a human manager of an imaging satellite schedulingsystem 904 can force out an event from the schedule of events so thatunder no circumstances are any imaging opportunities of that event areused at the specified time. In this way, the satellite system can avoidwasted effort by taking an image that may be, for instance, cloudy, andinstead replaces it with other opportunities where the expectation ofsuccessive imaging is higher.

FIG. 10 depicts an example of a directed acyclic graph 1000 used, by forinstance, a satellite scheduling system 904 to model events andconstraints of an imaging satellite system. A highest weighted path canbe determined through the directed acyclic graph using for instance, themethods 500 and/or 700 of FIGS. 5 and 7 respectively. The highestweighted path can be represented by bolded arrows 1002.

When a node is forced out due to, for instance, a user input requestinga change to the schedule of events, all edges in the directed acyclicgraph terminating at the node can be disabled. More particularly, when anode j is force out based at least in part on, for instance, a userinput relating to changes to an event request, all edges terminating atnode j can be disabled. For instance, all edges x_(i,j) are set to 0. Asa result, the new near-optimal or optimal path through the graph nolonger passes through the node that has been forced out.

For instance, FIG. 11 depicts the directed acyclic graph 1000 after anode has been forced out based on a user input. More particularly, node1004 has been forced out as a result of user input relating to changesto one or more event requests. As shown, edges terminating in node 1004have been removed. A new highest weighted path can be determined throughthe directed acyclic graph using, for instance, the methods 500 and/or700 of FIGS. 5 and 7 . The new highest weighted path is represented bybolded arrows 1006. As shown, the new highest weighted path does notpass through node 1004.

According to example aspects of the present disclosure, a human managercan have the ability to force in an event to the schedule of events. Forinstance, a human manager of an imaging satellite scheduling system 904can force in an event so that it is included in the schedule of events.For example, while importance weights can be assigned to various eventsto represent their relative importance, there may be cases where aspecific event is off the absolute highest importance but must beincluded in the schedule of opportunities. An example can be a breakingnews event for which imaging from a satellite is desired. Alternatively,an existing low importance event can temporarily be desired forimmediate fulfillment. A human manager may be best capable of decidingwhen an event should be forced in to the schedule of events, so that theevent is guaranteed to be included in the schedule.

When a node is forced in due to, for instance, a user input requesting achange to the schedule of events, all edged that “cross” the node can bedisabled. More particularly, when node j is forced in, all edges x_(i,j)are set to 0 where node i is chronologically earlier than node j andnode k is chronologically later than node j. As a result, an optimal ornear-optimal path through the graph is forced to pass through the nodethat has been forced in.

For instance, FIG. 12 depicts the directed acyclic graph 1000 after anode has been forced in based on a user input. More particularly, node1008 has been forced in as a result of user input relating to changes toone or more event requests. As shown, all edges running from nodesearlier than (to the left of) the forced in node to nodes later than (tothe right of) forced in node have been removed. A new highest weightedpath can be determined through the directed acyclic graph using, forinstance, the methods 500 and/or 700 of FIGS. 5 and 7 . The new highestweighted path is represented by bolded arrows 1010. As shown, thehighest weighted pass no longer passes through node 1004 or node 1012,which may be higher priority nodes.

Example Processing of Directed Acyclic Graphs Based at Least in Part onIdentification of Dominant Edges

Various enhancements can be made to the processing of directed acyclicgraphs to determine a schedule of events according to example aspects ofthe present disclosure, such as the example methods 500 and/or 700 ofFIGS. 5 and 7 . In one example embodiment, processing the directedacyclic graphs can include identifying dominant edges in the directedacyclic graph and removing or not traversing the dominant edges of thedirected acyclic graph as such dominant edges are determined to not be apart of the optimal or near-optimal path through the graph. In this way,the directed acyclic graph can be processed in a manner that can savememory and/or computing time.

More particularly, a property of the use of directed acyclic graphs indetermining a schedule of events can include the transitive nature ofedges in the graph. For instance, referring to FIG. 10 , if there is anedge from node 1014 to node 1008 (representing, for instance, a feasibleslew), and there is an edge from node 1008 to node 1004 (representing,for instance, a feasible slew), then there will be an edge from node1014 to node 1004 since that slew must also be feasible.

Given a few properties of the scheduling problem, it is observed thatsuch edges (those connecting two nodes for which there is also aconnecting path stopping at one or more intermediate nodes) are alwaysdominated and are typically never a part of the optimal or near-optimalpath through the directed acyclic graph.

First, the weights w_(i) are assed at the nodes, so all edges thatterminate at the same node will add the same weight to the overallcumulative weight. In the example directed acyclic graph 1000 of FIG. 10, the act of traversing from node 1008 to node 1004 and the act oftraversing from node 1014 to node 1004 provide the same added weightw₁₀₀₄.

Second, the weights are non-negative, so the addition of a precedingedge before node 1008 to node 1014 (e.g. node 1014 to node 1008) willadd a weight w₁₀₀₈>0. Therefore, the path from node 1014 to node 1004that stops at node 1008 will always have greater weight that the pathincluding the edge from node 1014 to node 1004.

According to example aspects of the present disclosure, dominant edgesthat connect two nodes for which there is also connecting path stoppingat one or more intermediate nodes can be identified. These edges are nottraversed and/or are disabled or removed from the directed acyclic graphduring processing. The skipping or removal of these edges will notaffect the identification of the near-optimal or optimal path and canresult in saving computation time and storage space. The graph with suchdominant edges removed can be the transitive reduction of the directedacyclic graph and can be computed in polynomial time.

An example memory (storage space) and computational time reduction forscheduling events using a directed acyclic graph can be achieved usingthe topology of the nodes in the directed acyclic graph. Moreparticularly, a satellite can physically slew from any orientation toanother orientation in finite time. That is, an agility modelf_(agility ( )) can have an upper bound. There is some duration of timet_(max-slew) above which the satellite is guaranteed to be able to slewbetween two events, no matter the orientation required.

A space reduction is possible by not explicitly enumerating an edgebetween two nodes in the directed acyclic graph that are separated(chronologically) by more than t_(max-slew). Rather, when optimizing forthe highest weighted incoming path to a node j, the “for” loop over allincoming edges can consider both explicitly enumerated edges as well astemporarily generated edges from previous nodes that are more thant_(max-slew) in the past. Because of the transitive properties of thedirected acyclic graph, a time reduction is possible by disabling or nottraversing edges to nodes that are more than 2t_(max-slew) in the pastas there will typically always be a higher weighted more desirable pathto node j.

Example Processing of Directed Acyclic Graphs Based at Least in Part onImaging and Downlinking Constraints

As discussed above, a scheduling module 104 according to example aspectsof the present disclosure can generate a schedule of events using adirected acyclic graph generated based at least in part on pair-wiseconstraints and cumulative constraints. For instance, the schedulingmodule 104 can process the directed acyclic graph using, for instance,the methods 500 and/or 700 of FIGS. 5 and 7 . One example cumulativeconstraint taken into account during processing of a directed acyclicgraph can include a data capacity constraint.

Data capacity limitations can refer to limits on the imaging satellitein terms of storing bits of data and transmitting the bits of data to areceiving station. Data capacity limitations can refer to an amount ofonboard storage on the imaging satellite. Data capacity limitations canrefer to an operational constraint that forces the imaging satellite totransmit all stored data to a receiving station during a datatransmission event. Data capacity limitations are cumulative constraintsbecause a history of prior events determines whether a data capacitylimitation would be violated. For example, if onboard storage is nearingmaximum capacity, attempting to store an additional image acquisitioncould require more data storage than is available. The additional imageacquisition event would therefore violate the cumulative constraint.

A satellite scheduling system 904 can seek to determine optimal andnear-optimal schedules of events by taking into account cumulativeconstraints based on data capacity to not exceed a limit on overall datacapacity for one or more satellites. One aspect of determining aschedule of events for a constellation of satellites is that thesatellite scheduling system 904 can consider multiple types of events,such as imaging events that increase the amount of data as well asdownlinking events that decrease the amount of data.

Downlinking events can involve transferring imagery collected by theconstellation of satellites to the ground for processing. In addition,downlinking events increase data capacity on satellites in theconstellation of satellites. However, the time spent downlinking imageryis time not spent collecting images. As a result, it is desirable tomake the downlink duration as short as possible while keeping thesatellite “capacity neutral.”

According to example aspects of the present disclosure, weights fordownlink events can be determined to reduce time spent downlinking whilekeeping satellites capacity neutral. More particularly, each downlinkevent can be discretized into several potential pointing events thatoccur at different times t_(j) and also for different durations τ_(j),For each potential downlink event j the importance weight w_(j) can bedynamically determined based at least in part by the time necessary todownlink everything onboard the satellite (calculated from d(t_(j)) andthe time available to downlink τ_(j).

According to particular implementations, the dynamic weight can bedetermined as a heuristic such that the closer the available timeduration to the necessary duration (to downlink everything), the higherthe importance weight and such that a downlink that is longer thanrequired is always weighted higher than a downlink that is shorter thanrequired. In addition, the importance weight can be finite so that thedownlink events can be separated from imaging events by applying anorder of magnitude difference to their respective weights.

CONCLUSION

Examples of scheduling systems and associated components and methods aredescribed herein. The figures show various systems and modules andconnections between them. The various modules and systems can becombined in various configurations and connections between the variousmodules and systems can represent physical or logical links. Therepresentations in the figures have been presented to clearly illustratethe principles of how to produce desirable schedules in a relativelyquick and efficient manner, and details regarding divisions of modulesor systems have been provided for ease of description rather thanattempting to delineate separate physical embodiments. The disclosurealso describes use of human collaboration with the scheduling engine(e.g., via incorporation of human actions into directed acyclic graphs).The examples and figures are intended to illustrate and not to limit thescope of the inventions described herein. For example, the principlesherein may be applied to a constellation of satellites whereinsatellites include communication satellites, imaging satellites, Earthobservation satellites, navigational satellites, weather satellites, orother types of satellites. The satellites can be any of a variety ofsizes such as large satellites, medium satellites, mini-satellites,micro-satellites, nano-satellites, pico-satellites, and the like. Theprinciples disclosed herein may be applied to systems that do notcomprise a constellation of imaging satellites such as, e.g., airtraffic control systems, vehicle routing systems, and so forth.

Although certain preferred embodiments and examples are disclosedherein, inventive subject matter extends beyond the specificallydisclosed embodiments to other alternative embodiments and/or uses, andto modifications and equivalents thereof. Thus, the scope of the claimsappended hereto is not limited by any of the particular embodimentsdescribed herein. For example, in any method or process disclosedherein, the acts or operations of the method or process can be performedin any suitable sequence and are not necessarily limited to anyparticular disclosed sequence. Various operations can be described asmultiple discrete operations in turn, in a manner that can be helpful inunderstanding certain embodiments; however, the order of descriptionshould not be construed to imply that these operations are orderdependent. Additionally, the structures described herein can be embodiedas integrated components or as separate components. For purposes ofcomparing various embodiments, certain aspects and advantages of theseembodiments are described. Not necessarily all such aspects oradvantages are achieved by any particular embodiment. Thus, for example,various embodiments can be carried out in a manner that achieves oroptimizes one advantage or group of advantages as taught herein withoutnecessarily achieving other aspects or advantages as can also be taughtor suggested herein.

Each of the processes, methods, and algorithms described herein and/ordepicted in the attached figures (including figures in the appendices)may be embodied in, and fully or partially automated by, code modulesexecuted by one or more physical computing systems, computer processors,application-specific circuitry, and/or electronic hardware configured toexecute computer instructions. For example, computing systems caninclude general or special purpose computers, servers, desktopcomputers, laptop or notebook computers or tablets, personal mobilecomputing devices, mobile telephones, and so forth. A code module may becompiled and linked into an executable program, installed in a dynamiclink library, or may be written in an interpreted programming language.

Various embodiments have been described in terms of the functionality ofsuch embodiments in view of the general interchangeability of hardwareand software. Whether such functionality is implemented inapplication-specific hardware or circuitry or in software executing onone or more physical computing devices depends upon the particularapplication and design constraints imposed on the overall system.Further, certain implementations of the functionality of the presentdisclosure are sufficiently mathematically, computationally, ortechnically complex that application-specific hardware or one or morephysical computing devices (utilizing appropriate executableinstructions) may be necessary to perform the functionality, forexample, due to the volume or complexity of the calculations involved orto provide results substantially in real-time.

Code modules may be stored on any type of non-transitorycomputer-readable medium, such as physical computer storage includinghard drives, solid state memory, random access memory (RAM), read onlymemory (ROM), optical disc, volatile or non-volatile storage,combinations of the same and/or the like. The methods and modules mayalso be transmitted as generated data signals (e.g., as part of acarrier wave or other analog or digital propagated signal) on a varietyof computer-readable transmission mediums, including wireless-based andwired/cable-based mediums, and may take a variety of forms (e.g., aspart of a single or multiplexed analog signal, or as multiple discretedigital packets or frames). The results of the disclosed processes andprocess steps may be stored, persistently or otherwise, in any type ofnon-transitory, tangible computer storage or may be communicated via acomputer-readable transmission medium.

Any processes, blocks, states, steps, or functionalities in flowdiagrams described herein and/or depicted in the attached figures shouldbe understood as potentially representing code modules, segments, orportions of code which include one or more executable instructions forimplementing specific functions (e.g., logical or arithmetical) or stepsin the process. The various processes, blocks, states, steps, orfunctionalities can be combined, rearranged, added to, deleted from,modified, or otherwise changed from the illustrative examples providedherein. In some embodiments, additional or different computing systemsor code modules may perform some or all of the functionalities describedherein. The methods and processes described herein are also not limitedto any particular sequence, and the blocks, steps, or states relatingthereto can be performed in other sequences that are appropriate, forexample, in serial, in parallel, or in some other manner. Tasks orevents may be added to or removed from the disclosed exampleembodiments. Moreover, the separation of various system components inthe implementations described herein is for illustrative purposes andshould not be understood as requiring such separation in allimplementations. It should be understood that the described programcomponents, methods, and systems can generally be integrated together ina single computer or software product or packaged into multiple computeror software products. Many implementation variations are possible.

The processes, methods, and systems may be implemented in a network (ordistributed) computing environment. Network environments includeenterprise-wide computer networks, intranets, local area networks (LAN),wide area networks (WAN), personal area networks (PAN), cloud computingnetworks, crowd-sourced computing networks, the Internet, and the WorldWide Web. The network may be a wired or a wireless network (e.g., aterrestrial and/or satellite network) or any other type of communicationnetwork.

The various elements, features and processes described herein may beused independently of one another, or may be combined in various ways.All possible combinations and subcombinations are intended to fallwithin the scope of this disclosure. Further, nothing in the foregoingdescription is intended to imply that any particular feature, element,component, characteristic, step, module, method, process, task, or blockis necessary or indispensable. The example systems and componentsdescribed herein may be configured differently than described. Forexample, elements or components may be added to, removed from, orrearranged compared to the disclosed examples.

As used herein any reference to “one embodiment” or “some embodiments”or “an embodiment” means that a particular element, feature, structure,or characteristic described in connection with the embodiment isincluded in at least one embodiment. The appearances of the phrase “inone embodiment” in various places in the specification are notnecessarily all referring to the same embodiment. Conditional languageused herein, such as, among others, “can,” “could,” “might,” “may,”“e.g.,” and the like, unless specifically stated otherwise, or otherwiseunderstood within the context as used, is generally intended to conveythat certain embodiments include, while other embodiments do notinclude, certain features, elements and/or steps. In addition, thearticles “a” or “an” as used in this application and the appended claimsare to be construed to mean “one or more” or “at least one” unlessspecified otherwise.

As used herein, the terms “comprises,” “comprising,” “includes,”“including,” “has,” “having” or any other variation thereof, areopen-ended terms and intended to cover a non-exclusive inclusion. Forexample, a process, method, article, or apparatus that comprises a listof elements is not necessarily limited to only those elements but mayinclude other elements not expressly listed or inherent to such process,method, article, or apparatus. Further, unless expressly stated to thecontrary, “or” refers to an inclusive or and not to an exclusive or. Forexample, a condition A or B is satisfied by any one of the following: Ais true (or present) and B is false (or not present), A is false (or notpresent) and B is true (or present), and both A and B are true (orpresent). As used herein, a phrase referring to “at least one of” a listof items refers to any combination of those items, including singlemembers. As an example, “at least one of: A, B, or C” is intended tocover: A, B, C, A and B, A and C, B and C, and A, B, and C. Conjunctivelanguage such as the phrase “at least one of X, Y and Z,” unlessspecifically stated otherwise, is otherwise understood with the contextas used in general to convey that an item, term, etc. may be at leastone of X, Y or Z. Thus, such conjunctive language is not generallyintended to imply that certain embodiments require at least one of X, atleast one of Y and at least one of Z to each be present.

The foregoing disclosure, for purpose of explanation, has been describedwith reference to specific embodiments, applications, and use cases.However, the illustrative discussions herein are not intended to beexhaustive or to limit the inventions to the precise forms disclosed.Many modifications and variations are possible in view of the aboveteachings. The embodiments were chosen and described in order to explainthe principles of the inventions and their practical applications, tothereby enable others skilled in the art to utilize the inventions andvarious embodiments with various modifications as are suited to theparticular use contemplated.

While the present subject matter has been described in detail withrespect to specific example embodiments thereof, it will be appreciatedthat those skilled in the art, upon attaining an understanding of theforegoing may readily produce alterations to, variations of, andequivalents to such embodiments. Accordingly, the scope of the presentdisclosure is by way of example rather than by way of limitation, andthe subject disclosure does not preclude inclusion of suchmodifications, variations and/or additions to the present subject matteras would be readily apparent to one of ordinary skill in the art.

1-20. (canceled)
 21. A method of controlling a constellation of imagingsatellites, the method comprising: receiving event requests comprisingone or more imaging events or one or more downlink events; identifyingone or more imaging satellites in the constellation of imagingsatellites which will be positioned over one or more regions at one ormore designated times suitable to perform the event requests; producing,by accessing a graph, a schedule of events for the event requests, theschedule comprising designated times that do not violate a constraint ofthe constellation of imaging satellites, wherein the graph comprises oneor more first nodes representative of the one or more imaging events andone or more second nodes representative of the one or more downlinkevents, wherein producing the schedule comprises applying a respectiveweight to each of the one or more imaging events and the one or moredownlink events, wherein each respective weight is indicative of apriority of the imaging event or downlink event for inclusion in theschedule of events, the weights for the one or more downlink eventsbeing based, at least in part, on a downlink time associated with thedownlink event; generating one or more control instructions based, atleast in part, on the schedule; and transmitting the one or more controlinstructions to one or more of the imaging satellites in theconstellation to initiate a performance of the events in the schedule ata respective designated time.
 22. The method of claim 21, whereinweights for the one or more downlink events are higher than weights forthe one or more imaging events.
 23. The method of claim 21, wherein theweights for the one or more downlink events are determined based, atleast in part, on a time to downlink images from one or more of theimaging events.
 24. The method of claim 21, wherein the operationsfurther comprise: receiving user input relating to changes to one ormore of the event requests; and adjusting the schedule of events based,at least in part, on the user input.
 25. The method of claim 24, whereinthe schedule of events comprises one or more disabled edges in the graphthat are based, at least in part, on the user input.
 26. The method ofclaim 25, wherein at least one edge terminating at a node associatedwith the user input is disabled to force out an event from the scheduleof events.
 27. The method of claim 21, wherein the schedule of events isassociated with a highest weighted path through the graph.
 28. Themethod of claim 21, wherein the graph is a directed acyclic graph.
 29. Asystem for controlling a constellation of imaging satellites, the systemcomprising: at least one memory; and one or more computing devices incommunication with the memory, the one or more computing devicesconfigured to execute instructions that cause the one or more computingdevices to perform operations, the operations comprising: receivingevent requests comprising one or more imaging events or one or moredownlink events; identifying one or more imaging satellites in theconstellation of imaging satellites which will be positioned over one ormore regions at one or more designated times suitable to perform theevent requests; producing, by accessing a graph, a schedule of eventsfor the event requests, the schedule comprising designated times that donot violate a constraint of the constellation of imaging satellites,wherein the graph comprises one or more first nodes representative ofthe one or more imaging events and one or more second nodesrepresentative of the one or more downlink events, wherein producing theschedule comprises applying a respective weight to each of the one ormore imaging events and the one or more downlink events, wherein eachrespective weight is indicative of a priority of the imaging event ordownlink event for inclusion in the schedule of events, the weights forthe one or more downlink events being based, at least in part, on adownlink time associated with the downlink event; generating one or morecontrol instructions based at least in part on the schedule; andtransmitting the one or more control instructions to one or more of theimaging satellites in the constellation to initiate a performance of theevents in the schedule at a respective designated time.
 30. The systemof claim 29, wherein weights for the one or more downlink events arehigher than weights for the one or more imaging events.
 31. The systemof claim 30, wherein the weights for the one or more downlink events aredetermined based, at least in part, on a time to downlink images fromone or more of the imaging events.
 32. The system of claim 29, whereinthe operations further comprise: receiving user input relating tochanges to one or more of the event requests; and adjusting the scheduleof events based, at least in part, on the user input.
 33. The method ofclaim 32, wherein the schedule of events comprises one or more disablededges in the graph that are based, at least in part, on the user input.34. The method of claim 33, wherein at least one edge terminating at anode associated with the user input is disabled to force out an eventfrom the schedule of events.
 35. The method of claim 29, wherein theschedule of events is associated with a highest weighted path throughthe graph.
 36. The method of claim 29, wherein the graph is a directedacyclic graph.
 37. One or more non-transitory computer-readable mediathat store instructions that are executable by one or more processors toperform operations comprising: receiving event requests comprising oneor more imaging events or one or more downlink events; identifying oneor more imaging satellites in the constellation of imaging satelliteswhich will be positioned over one or more regions at one or moredesignated times suitable to perform the event requests; producing, byaccessing a graph, a schedule of events for the event requests, theschedule comprising designated times that do not violate a constraint ofthe constellation of imaging satellites, wherein the graph comprises oneor more first nodes representative of the one or more imaging events andone or more second nodes representative of the one or more downlinkevents, wherein producing the schedule comprises applying a respectiveweight to each of the one or more imaging events and the one or moredownlink events, wherein each respective weight is indicative of apriority of the imaging event or downlink event for inclusion in theschedule of events, the weights for the one or more downlink eventsbeing based, at least in part, on a downlink time associated with thedownlink event; generating one or more control instructions based atleast in part on the schedule; and transmitting the one or more controlinstructions to one or more of the imaging satellites in theconstellation to initiate a performance of the events in the schedule ata respective designated time.
 38. The one or more non-transitorycomputer-readable media of claim 37, wherein the schedule of events isassociated with a highest weighted path through the graph.
 39. The oneor more non-transitory computer-readable media of claim 37, wherein theoperations further comprise: receiving user input relating to changes toone or more of the event requests; and adjusting the schedule of eventsbased, at least in part, on the user input.
 40. The one or morenon-transitory computer-readable media of claim 39, wherein the graph isa directed acyclic graph.